Visual content for display, such as content for graphical user interfaces and video games, may be generated by a graphics processing unit (GPU). A GPU may convert two-dimensional or three-dimensional (3D) objects into a two-dimensional (2D) pixel representation that may be displayed. Converting information about 3D objects into a bit map that can be displayed is known as pixel rendering, and requires considerable memory and processing power. In the past, 3D graphics capability was available only on powerful workstations. However, now 3D graphics accelerators are commonly found in personal computers (PC), as well as in mobile devices, such as smart phones, tablet computers, portable media players, portable video gaming consoles, and the like. Typically, mobile devices have less computational power and memory capacity as compared to conventional PCs. As such, increased complexity in 3D graphics rendering techniques presents difficulties when implementing such techniques on a mobile device.
In many systems, techniques for preempting execution of commands on a GPU are utilized so that higher priority tasks that require GPU processing may be executed. Such preemption techniques generally include processes whereby the progress of the GPU through one command stream is tracked. In this way, the GPU may transition to the higher priority task, and then return to the original task at the point the GPU stopped.